package com.epoch.zuul.auth.dao;

import com.epoch.zuul.auth.role.Consumer;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @Description consumer dao
 * @author Seven
 * @date 2021/12/10
 */
@Mapper
@Repository
public interface ConsumerDao {

    /**
     * search consumer by id
     * @param csId
     * @return consumer
     */
    Consumer getById(@Param("csId") String csId);

    /**
     * get consumer by csPhone
     * @param csPhone
     * @return consumer
     */
    Consumer getByCsPhone(@Param("csPhone") String csPhone);

    /**
     * login
     * @param csPhone
     * @param csPwd
     * @return
     */
    Consumer login(@Param("csPhone") String csPhone,
                   @Param("csPwd")  String csPwd);

    /**
     * 用户注册 csId, csphone, cspwd, cscall, csage, csname, csemail, cssex
     * @param consumer
     */
    int simpleRegister(Consumer consumer);

    /**
     * 用户信息完善
     * @param csId
     * @param csName
     * @param csEmail
     * @param csSex
     * @param csAge
     * @param csBirth
     * @param csPhoto
     * @param csInfo
     */
    int csInfoComplete(@Param("csId") String csId,
                        @Param("csName") String csName,
                        @Param("csEmail") String csEmail,
                        @Param("csSex") String csSex,
                        @Param("csAge") int csAge,
                        @Param("csBirth") String csBirth,
                        @Param("csPhoto") String csPhoto,
                        @Param("csInfo") String csInfo
    );

    /**
     * 用户修改密码
     * @param csPhone
     * @param csPwd
     */
    void changePwd(@Param("csPhone") String csPhone, @Param("csPwd") String csPwd);

    /**
     * 通过id删除用户
     * @param csId
     * @return
     */
    int deleteCsByCsId(@Param("csId") String csId);

    /**
     * 用户上传头像
     * @param csId
     * @param photo
     * @param photoType
     * @return
     */
    int updatePhoto(@Param("csId") String csId, @Param("photo") byte[] photo, @Param("photoType") String photoType);

    /**
     * 获取用户基本信息 用户管理
     * @return
     */
    List<Consumer> getConsumerList();

    /**
     * 添加管理员
     * @param consumer
     * @return
     */
    int addManager(Consumer consumer);

    /**
     * 修改用户的状态
     * @param csId
     * @param useState
     * @return
     */
    int updateCsUseState(@Param("csId") String csId, @Param("useState") Integer useState);

    /**
     * 根据id获取用户
     * @param id
     * @return
     */
    Consumer getCsById(@Param("id") Integer id);

}
